From: Martin Rudalics Date: Tue, 20 Mar 2007 09:35:42 +0000 (+0000) Subject: (basic-save-buffer): Do not set visited filename when X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1~1^2~1447 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=27d254c62e959f0d481c2385a111a891e79a5cce;p=emacs.git (basic-save-buffer): Do not set visited filename when the corresponding directory does not exist or the specified filename is that of an existing directory. --- diff --git a/lisp/files.el b/lisp/files.el index 50180dc6ebf..d0a89ec65b5 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3595,10 +3595,21 @@ Before and after saving the buffer, this function runs (let ((filename (expand-file-name (read-file-name "File to save in: ") nil))) - (and (file-exists-p filename) - (or (y-or-n-p (format "File `%s' exists; overwrite? " - filename)) - (error "Canceled"))) + (if (file-exists-p filename) + (if (file-directory-p filename) + ;; Signal an error if the user specified the name of an + ;; existing directory. + (error "%s is a directory" filename) + (unless (y-or-n-p (format "File `%s' exists; overwrite? " + filename)) + (error "Canceled"))) + ;; Signal an error if the specified name refers to a + ;; non-existing directory. + (let ((dir (file-name-directory filename))) + (unless (file-directory-p dir) + (if (file-exists-p dir) + (error "%s is not a directory" dir) + (error "%s: no such directory" dir))))) (set-visited-file-name filename))) (or (verify-visited-file-modtime (current-buffer)) (not (file-exists-p buffer-file-name))